Estructuras dinámicas de datos
Consultas, lista de correo 'C++ Con Clase' 'C++ Con Clase' página de entrada Librerías estándar C Tabla de contenido Contactar con Webmaster
*Introducción
*1. Listas abiertas
 . 1.1 Definición
 . 1.2 Tipos de datos
 . 1.3 Operaciones básicas
 . 1.4 Insertar elementos
 . 1.5 Localizar elementos
 . 1.6 Eliminar elementos
 . 1.7 Moverse en una lista
 . 1.8 Borrar una lista
 . 1.9 Ejemplo en C
 . 1.10 Ejemplo C++
 . 1.11 Ejemplo C++ con plantillas
*2. Pilas
*3. Colas
*4. Listas circulares
*5. Listas doblemente enlazadas
*6. Árboles
*7. Árboles binarios de búsqueda (ABB)
*8. Árboles AVL
*Descarga de ejemplos
<< < > >>

1.3 Operaciones básicas con listas:  

Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar:

  • Añadir o insertar elementos.
  • Buscar o localizar elementos.
  • Borrar elementos.
  • Moverse a través de una lista, anterior, siguiente, primero.

Cada una de estas operaciones tendrá varios casos especiales, por ejemplo, no será lo mismo insertar un nodo en una lista vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.

1.4 Insertar elementos en una lista abierta:  

Veremos primero los casos sencillos y finalmente construiremos un algoritmo genérico para la inserción de elementos en una lista.

Insertar un elemento en una lista vacía:

Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL:

El proceso es muy simple, bastará con que:

  1. nodo->siguiente apunte a NULL.
  2. Lista apunte a nodo.

Insertar un elemento en la primera posición de una lista:

Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que en el caso anterior la lista es una lista vacía, pero siempre podemos, y debemos considerar una lista vacía como una lista.

De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no vacía:

El proceso sigue siendo muy sencillo:

  1. Hacemos que nodo->siguiente apunte a Lista.
  2. Hacemos que Lista apunte a nodo.

Insertar un elemento en la última posición de una lista:

Este es otro caso especial. Para este caso partiremos de una lista no vacía:

El proceso en este caso tampoco es excesivamente complicado:

  1. Necesitamos un puntero que señale al último elemento de la lista. La manera de conseguirlo es empezar por el primero y avanzar hasta que el nodo que tenga como siguiente el valor NULL.
  2. Hacer que nodo->siguiente sea NULL.
  3. Hacer que ultimo->siguiente sea nodo.

Insertar un elemento a continuación de un nodo cualquiera de una lista:

De nuevo podemos considerar el caso anterior como un caso particular de este. Ahora el nodo "anterior" será aquel a continuación del cual insertaremos el nuevo nodo:

Suponemos que ya disponemos del nuevo nodo a insertar, apuntado por nodo, y un puntero al nodo a continuación del que lo insertaremos.

El proceso a seguir será:

  1. Hacer que nodo->siguiente señale a anterior->siguiente.
  2. Hacer que anterior->siguiente señale a nodo.

<< < > >>